// Learn TypeScript:
//  - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html

const {ccclass, property} = cc._decorator;

@ccclass
export default class Utils {

    
public static changeParentWithoutChangingWorldPosition(nodeA: cc.Node, newParent: cc.Node): void {
    // 获取节点A当前的世界坐标
    const worldPosition = nodeA.convertToWorldSpaceAR(cc.Vec2.ZERO);

    // 将世界坐标转换为新父节点的本地坐标系下的坐标
    const newLocalPosition = newParent.convertToNodeSpaceAR(worldPosition);

    // 更改父节点前，记录节点A当前的缩放和旋转（世界坐标系）
    const currentScale = nodeA.scale;
    const currentRotation = nodeA.rotation;

    // 更改节点A的父节点
    nodeA.parent = newParent;

    // 设置节点A在新父节点坐标系中的位置
    nodeA.setPosition(newLocalPosition);

    // 更改节点A的缩放和旋转，使之在世界坐标系中保持不变
    // 注意：这一步可能需要根据你的具体需求进行调整，因为直接设置可能不适用于所有情况
    // 这里省略了缩放和旋转的设置，因为它们的处理会根据父节点的缩放和旋转有所不同
    // 你可能需要计算相对于新父节点的缩放和旋转值
}
    // update (dt) {}
}
